from joblib import load

import numpy as np

class Clssslfication(object):
    
    def __init__(self):
        self.knn= load('knn_classifien.joblib')
        self.scaler=load('feature_scaler.joblib')
        self.le=load('label_encoder.joblib')
        
    def get_predicter_category (self, new_data) :
        feature_order = ['eps','total_revene_ps','undist_profit_ps','gross_margin','fcff','fcfe','tangiblr_asset',
                                'bps','grossprofit_marin','npta']
        new_values = np.array([[new_data[col] for col in feature_order]])
        new_scaled = self.scaler.transform(new_values)
        predicted_label = self.knn.predict (new_scaled)
        predicted_category = self.le.inverse_transform(predicted_label)
        return predicted_category[0]
    
if __name__=='__main__': 
    ci = Clssslfication()
    new_data={
    #000002.SZ 2024-08-31  -0.8306  11.9673 7.0209  11586700000 -12879100000  -5263460600 179873000000  20.2568 8.1152 -0.5821
    'eps':' -0.8306',
    'total_revenue_ps':'11.9673',
    'undist_profit_ps':'7.0209',
    'gross_margin':'11586700000',
    'fcff':'-12879100000',
    'fcfe':'-5263460600',
    'tangible_asset':'179873000000',
    'bps':'20.2568',
    'grossprofit_margin':'8.1152',
    'npta':'-0.5821'
    }
    
    predicted_category = ci.get_predicter_category(new_data)
    print(predicted_category)